import request from '@/utils/request'
import { SERVICE } from './utils'

/**
 * 根据文件的md5获取未上传完的任务
 * @param identifier 文件md5
 * @returns {Promise<AxiosResponse<any>>}
 */
function getTaskInfo (identifier) {
  return request.get(`/oss/bigfile/${identifier}?service=${SERVICE}`)
}

/**
 * 初始化一个分片上传任务
 * @param identifier 文件md5
 * @param fileName 文件名称
 * @param totalSize 文件大小
 * @param chunkSize 分块大小
 * @returns {Promise<AxiosResponse<any>>}
 */
function initTask ({ identifier, fileName, totalSize, chunkSize }) {
  return request.post(`/oss/bigfile?service=${SERVICE}`, {
    identifier,
    fileName,
    totalSize,
    chunkSize
  })
}

/**
 * 获取预签名分片上传地址
 * @param identifier 文件md5
 * @param partNumber 分片编号
 * @returns {Promise<AxiosResponse<any>>}
 */
function getPreSignUrl ({ identifier, partNumber }) {
  return request.get(`/oss/bigfile/${identifier}/${partNumber}?service=${SERVICE}`)
}

/**
 * 合并分片
 * @param identifier
 * @returns {Promise<AxiosResponse<any>>}
 */
function mergeFile (identifier) {
  return request.post(`/oss/bigfile/merge/${identifier}?service=${SERVICE}`)
}

export { getTaskInfo, initTask, getPreSignUrl, mergeFile }
